package com.dubbo.service.business.order;

import com.dubbo.domain.Order;
import com.dubbo.domain.User;
import com.dubbo.service.base.BaseService;

import java.util.Map;

/**
 * 订单service
 * @author chenluqiang
 * @date 2018年12月18日 下午4:26:56 
 *
 */
public interface OrderService extends BaseService<Order> {
	
	/**
	 * 订单列表
	 * @author chenluqiang
	 * @date 2018年12月17日 下午2:42:37 
	 * @param type 类型 0=新订单 1=未接单 2=审核中 3=待发货 4=待收货 5=已完成
	 * @return
	 */
	Map<String, Object> orderList(User user, Long pageStart, Long pageTotal, Integer type);
	
	/**
	 * 订单详情
	 * @author chenluqiang
	 * @date 2018年12月18日 上午11:16:15 
	 * @param request
	 * @param orderId 订单id
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> orderDetail(User user, String orderId) throws Exception;

	/**
	 * (分销商或代理商)拒绝接单
	 * @author wujunyuan
	 * @date 2018年12月25日  上午10:05:18
	 * @param user
	 * @param orderId 订单id
	 * @return
	 */
	Map<String, Object> orderRefuse(User user, String orderId);
	
	/**
	 * 提交审核
	 * @author wujunyuan
	 * @date 2018年12月25日  下午4:42:27
	 * @param user
	 * @param orderId 订单id
	 * @param addressee 上级收件人名称
	 * @param addresseephone 上级收件人电话
	 * @param address 上级收货地址
	 * @return
	 */
	Map<String, Object> orderSubmit(User user, String orderId,
                                    String addressee, String addresseephone, String address);
	
	/**
	 * 订单删除
	 * @author chenluqiang
	 * @date 2018年12月25日 上午10:11:06 
	 * @param orderId 订单id
	 * @return
	 */
	Map<String, Object> delOrder(User user, String orderId);

	/**
	 * 取消订单
	 * @author wujunyuan
	 * @date 2018年12月25日  下午2:45:57
	 * @param user
	 * @param orderId 订单id
	 * @return
	 */
	Map<String, Object> orderCancel(User user, String orderId);

	/**
	 * (分销商/代理商)确认取消订单
	 * @author wujunyuan
	 * @date 2018年12月25日  下午3:18:33
	 * @param user
	 * @param orderId 订单id
	 * @return
	 */
	Map<String, Object> orderConfirmCancel(User user, String orderId);

	/**
	 * 确认收货
	 * @author wujunyuan
	 * @date 2018年12月25日  下午3:51:39
	 * @param user
	 * @param orderId 订单id
	 * @return
	 */
	Map<String, Object> orderConfirmReceived(User user, String orderId);
	
	/**
	 * 支付宝回调
	 *
	 * @author lihongwu
	 * 2019年1月4日 下午6:04:24
	 * @param params
	 * @return
	 */
	boolean orderNotify(Map<String, String> params);

	/**
	 * 修改订单收货地址
	 *
	 * @author lihongwu
	 * 2019年1月18日 下午5:31:33
	 * @param orderId
	 * @param addressId
	 * @return
	 */
	Map<String, Object> editReciverAddress(String orderId, String addressId);
}
